backend: fix switch_ioscheduler()
The backend.c function switch_ioscheduler() suffers from several
problems:
1) This function only considers the first file of a job. For jobs using
multiple files, the ioscheduler switch will done only for that file.
2) If the job file is a character device, a pipe or a regular file for
which the hosting block device file cannot be determined (e.g. a
remote file), thring to switch the IO scheduler causes a crash as the
file disk_util field is NULL.
Fix both problems by introducing the helper function set_ioscheduler()
and changing switch_ioscheduler() to repeatdly call this helper for all
files of the job, ignoring character device files, pipe files and files
without a hosting device information.
Also update the man page to better explain when the ioscheduler option
applies.
Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>