diff options
author | Matthias Koenig | 2007-07-18 16:15:46 +0200 |
---|---|---|
committer | Karel Zak | 2007-07-27 13:39:29 +0200 |
commit | 2018629905d3d881ff3fddf76552b6e79091f2b8 (patch) | |
tree | f51632da5d7c7a47a83ec77f94174dd265ecd7ed /disk-utils/mkfs.minix.c | |
parent | remove hardcoded package name from some utils (diff) | |
download | kernel-qcow2-util-linux-2018629905d3d881ff3fddf76552b6e79091f2b8.tar.gz kernel-qcow2-util-linux-2018629905d3d881ff3fddf76552b6e79091f2b8.tar.xz kernel-qcow2-util-linux-2018629905d3d881ff3fddf76552b6e79091f2b8.zip |
disk-utils: let mkfs tools open with O_EXCL
Let mkswap, mkfs.bfs, mkfs.minix open with O_EXCL if
used on block devices to prevent writing to the device
even if they are busy (mounted).
Unfortunately, O_EXCL has zero effect for 2.4 kernels where
in-kernel code doesn't use O_EXCL-like access locks. (Tested
on RHEL3.)
Signed-off-by: Matthias Koenig <mkoenig@suse.de>
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'disk-utils/mkfs.minix.c')
-rw-r--r-- | disk-utils/mkfs.minix.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/disk-utils/mkfs.minix.c b/disk-utils/mkfs.minix.c index 92a6789a7..8a81e7cad 100644 --- a/disk-utils/mkfs.minix.c +++ b/disk-utils/mkfs.minix.c @@ -699,11 +699,14 @@ main(int argc, char ** argv) { tmp += dirsize; *(short *)tmp = 2; strcpy(tmp+2,".badblocks"); - DEV = open(device_name,O_RDWR ); + if (stat(device_name, &statbuf) < 0) + die(_("unable to stat %s")); + if (S_ISBLK(statbuf.st_mode)) + DEV = open(device_name,O_RDWR | O_EXCL); + else + DEV = open(device_name,O_RDWR); if (DEV<0) die(_("unable to open %s")); - if (fstat(DEV,&statbuf)<0) - die(_("unable to stat %s")); if (!S_ISBLK(statbuf.st_mode)) check=0; else if (statbuf.st_rdev == 0x0300 || statbuf.st_rdev == 0x0340) |