Loading drivers/block/floppy.c +9 −50 Original line number Diff line number Diff line Loading @@ -514,8 +514,6 @@ static unsigned long fdc_busy; static DECLARE_WAIT_QUEUE_HEAD(fdc_wait); static DECLARE_WAIT_QUEUE_HEAD(command_done); #define NO_SIGNAL (!interruptible || !signal_pending(current)) /* Errors during formatting are counted here. */ static int format_errors; Loading Loading @@ -858,36 +856,15 @@ static void set_fdc(int drive) } /* locks the driver */ static int _lock_fdc(int drive, bool interruptible, int line) static int lock_fdc(int drive, bool interruptible) { if (atomic_read(&usage_count) == 0) { pr_err("Trying to lock fdc while usage count=0 at line %d\n", line); if (WARN(atomic_read(&usage_count) == 0, "Trying to lock fdc while usage count=0\n")) return -1; } if (test_and_set_bit(0, &fdc_busy)) { DECLARE_WAITQUEUE(wait, current); add_wait_queue(&fdc_wait, &wait); for (;;) { set_current_state(TASK_INTERRUPTIBLE); if (!test_and_set_bit(0, &fdc_busy)) break; schedule(); if (!NO_SIGNAL) { remove_wait_queue(&fdc_wait, &wait); if (wait_event_interruptible(fdc_wait, !test_and_set_bit(0, &fdc_busy))) return -EINTR; } } set_current_state(TASK_RUNNING); remove_wait_queue(&fdc_wait, &wait); flush_scheduled_work(); } command_status = FD_COMMAND_NONE; __reschedule_timeout(drive, "lock fdc"); Loading @@ -895,9 +872,6 @@ static int _lock_fdc(int drive, bool interruptible, int line) return 0; } #define lock_fdc(drive, interruptible) \ _lock_fdc(drive, interruptible, __LINE__) /* unlocks the driver */ static void unlock_fdc(void) { Loading Loading @@ -2015,25 +1989,10 @@ static int wait_til_done(void (*handler)(void), bool interruptible) schedule_bh(handler); if (command_status < 2 && NO_SIGNAL) { DECLARE_WAITQUEUE(wait, current); add_wait_queue(&command_done, &wait); for (;;) { set_current_state(interruptible ? TASK_INTERRUPTIBLE : TASK_UNINTERRUPTIBLE); if (command_status >= 2 || !NO_SIGNAL) break; is_alive(__func__, ""); schedule(); } set_current_state(TASK_RUNNING); remove_wait_queue(&command_done, &wait); } if (interruptible) wait_event_interruptible(command_done, command_status >= 2); else wait_event(command_done, command_status >= 2); if (command_status < 2) { cancel_activity(); Loading Loading
drivers/block/floppy.c +9 −50 Original line number Diff line number Diff line Loading @@ -514,8 +514,6 @@ static unsigned long fdc_busy; static DECLARE_WAIT_QUEUE_HEAD(fdc_wait); static DECLARE_WAIT_QUEUE_HEAD(command_done); #define NO_SIGNAL (!interruptible || !signal_pending(current)) /* Errors during formatting are counted here. */ static int format_errors; Loading Loading @@ -858,36 +856,15 @@ static void set_fdc(int drive) } /* locks the driver */ static int _lock_fdc(int drive, bool interruptible, int line) static int lock_fdc(int drive, bool interruptible) { if (atomic_read(&usage_count) == 0) { pr_err("Trying to lock fdc while usage count=0 at line %d\n", line); if (WARN(atomic_read(&usage_count) == 0, "Trying to lock fdc while usage count=0\n")) return -1; } if (test_and_set_bit(0, &fdc_busy)) { DECLARE_WAITQUEUE(wait, current); add_wait_queue(&fdc_wait, &wait); for (;;) { set_current_state(TASK_INTERRUPTIBLE); if (!test_and_set_bit(0, &fdc_busy)) break; schedule(); if (!NO_SIGNAL) { remove_wait_queue(&fdc_wait, &wait); if (wait_event_interruptible(fdc_wait, !test_and_set_bit(0, &fdc_busy))) return -EINTR; } } set_current_state(TASK_RUNNING); remove_wait_queue(&fdc_wait, &wait); flush_scheduled_work(); } command_status = FD_COMMAND_NONE; __reschedule_timeout(drive, "lock fdc"); Loading @@ -895,9 +872,6 @@ static int _lock_fdc(int drive, bool interruptible, int line) return 0; } #define lock_fdc(drive, interruptible) \ _lock_fdc(drive, interruptible, __LINE__) /* unlocks the driver */ static void unlock_fdc(void) { Loading Loading @@ -2015,25 +1989,10 @@ static int wait_til_done(void (*handler)(void), bool interruptible) schedule_bh(handler); if (command_status < 2 && NO_SIGNAL) { DECLARE_WAITQUEUE(wait, current); add_wait_queue(&command_done, &wait); for (;;) { set_current_state(interruptible ? TASK_INTERRUPTIBLE : TASK_UNINTERRUPTIBLE); if (command_status >= 2 || !NO_SIGNAL) break; is_alive(__func__, ""); schedule(); } set_current_state(TASK_RUNNING); remove_wait_queue(&command_done, &wait); } if (interruptible) wait_event_interruptible(command_done, command_status >= 2); else wait_event(command_done, command_status >= 2); if (command_status < 2) { cancel_activity(); Loading