mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 02:27:36 +03:00
Fix for re-reading /etc/mtab.
This is a continuation of fb5c53ea65:
When /etc/mtab is updated on Linux it's done atomically with
rename(2). A new mtab is written, the existing mtab is unlinked,
and the new mtab is renamed to /etc/mtab. This means that we
must close the old file and open the new file to get the updated
contents. Using rewind(3) will just move the file pointer back
to the start of the file, freopen(3) will close and open the file.
In this commit, a few more rewind(3) calls were replaced with freopen(3)
to allow updated mtab entries to be picked up immediately.
Signed-off-by: John M. Layman <jml@frijid.net>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #2215
Issue #1611
This commit is contained in:
committed by
Brian Behlendorf
parent
f3ad9cd67a
commit
cbca6076b3
@@ -1165,7 +1165,10 @@ zpool_disable_datasets(zpool_handle_t *zhp, boolean_t force)
|
||||
|
||||
namelen = strlen(zhp->zpool_name);
|
||||
|
||||
rewind(hdl->libzfs_mnttab);
|
||||
/* Reopen MNTTAB to prevent reading stale data from open file */
|
||||
if (freopen(MNTTAB, "r", hdl->libzfs_mnttab) == NULL)
|
||||
return (ENOENT);
|
||||
|
||||
used = alloc = 0;
|
||||
while (getmntent(hdl->libzfs_mnttab, &entry) == 0) {
|
||||
/*
|
||||
|
||||
@@ -793,7 +793,10 @@ zfs_path_to_zhandle(libzfs_handle_t *hdl, char *path, zfs_type_t argtype)
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
rewind(hdl->libzfs_mnttab);
|
||||
/* Reopen MNTTAB to prevent reading stale data from open file */
|
||||
if (freopen(MNTTAB, "r", hdl->libzfs_mnttab) == NULL)
|
||||
return (NULL);
|
||||
|
||||
while ((ret = getextmntent(hdl->libzfs_mnttab, &entry, 0)) == 0) {
|
||||
if (makedevice(entry.mnt_major, entry.mnt_minor) ==
|
||||
statbuf.st_dev) {
|
||||
|
||||
Reference in New Issue
Block a user