diff --git a/ChangeLog b/ChangeLog index bf2f66c3..0c323688 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,6 @@ +2008-12-14 + * Fix disk_protect for linux-2.6.27 (and hopefully above) + 2008-12-09 * Add an option to timed_thread_test() to not wait for the interval period (so that IMAP IDLE works better) diff --git a/src/linux.c b/src/linux.c index a5feb59f..ab4d709e 100644 --- a/src/linux.c +++ b/src/linux.c @@ -2337,7 +2337,10 @@ const char *get_disk_protect_queue(const char *disk) char path[128]; int state; - snprintf(path, 127, "/sys/block/%s/queue/protect", disk); + snprintf(path, 127, "/sys/block/%s/device/unload_heads", disk); + if (access(path, F_OK)) { + snprintf(path, 127, "/sys/block/%s/queue/protect", disk); + } if ((fp = fopen(path, "r")) == NULL) return "n/a "; if (fscanf(fp, "%d\n", &state) != 1) { @@ -2345,6 +2348,6 @@ const char *get_disk_protect_queue(const char *disk) return "failed"; } fclose(fp); - return state ? "frozen" : "free "; + return (state > 0) ? "frozen" : "free "; }