Reputation: 71
According to an answer on this question : Why doing I/O in Linux is uninterruptible? I/O on linux is uninterruptible (uninterruptible in sleep). But if I start a process ,say a large 'dd' on a file and while the process is going on I forcefully unmount the Filesystem (where the file is),the process gets killed . ideally it should be in a hung state because it is sleeping and is UN.
Upvotes: 0
Views: 439
Reputation: 4307
"Uninterruptible" applies to the low-level read/write operations handled by the kernel. In C programming, these correspond broadly to read()
and write()
calls on the C standard library. That a utility can be interrupted does not say much about whether I/O operations can be interrupted, because a specific file operation in a utility might correspond to many low-level I/O operations.
In the case of dd
, the default transfer block size is 512 bytes, so copying a large file might consist of many I/O operations. dd
can be interrupted between these operations. I would expect the same to apply to most utilities that operate on files. If you can force them to work with huge data blocks (e.g., specify a gigabyte-size argument for bs=
in dd
) then you might be able to see that low-level I/O operations are uninterruptible.
Upvotes: 1