X-Git-Url: https://git.decadent.org.uk/gitweb/?p=nfs-utils.git;a=blobdiff_plain;f=utils%2Fmount%2Fmount_libmount.c;h=e8f17a9c5910fcb2494d59639e760017b82da2a2;hp=6dd64846470efc9bb3acc55dc0f4a0b598243ae1;hb=adee9b7bddedcddb8de4e0b7c2f778148b1f4d2b;hpb=cf5b38e707b629540b5123124228311a620e3dce diff --git a/utils/mount/mount_libmount.c b/utils/mount/mount_libmount.c index 6dd6484..e8f17a9 100644 --- a/utils/mount/mount_libmount.c +++ b/utils/mount/mount_libmount.c @@ -15,8 +15,8 @@ * * You should have received a copy of the GNU General Public * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 021110-1307, USA. + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 0211-1301 USA * */ @@ -61,10 +61,19 @@ int nomtab; * managed by libmount at all. We have to use "mount attributes" that are * private for mount. helpers. */ -static void store_mount_options(struct libmnt_fs *fs, const char *opts) +static void store_mount_options(struct libmnt_fs *fs, const char *nfs_opts) { - mnt_fs_set_fs_options(fs, opts); /* for mtab */ - mnt_fs_set_attributes(fs, opts); /* for non-mtab systems */ + char *o = NULL; + + mnt_fs_set_attributes(fs, nfs_opts); /* for non-mtab systems */ + + /* for mtab create a new options list */ + mnt_optstr_append_option(&o, mnt_fs_get_vfs_options(fs), NULL); + mnt_optstr_append_option(&o, nfs_opts, NULL); + mnt_optstr_append_option(&o, mnt_fs_get_user_options(fs), NULL); + + mnt_fs_set_options(fs, o); + free(o); } /* @@ -337,6 +346,21 @@ static int mount_main(struct libmnt_context *cxt, int argc, char **argv) if (chk_mountpoint(mount_point)) goto err; + + /* + * The libmount strictly uses only options from fstab if running in + * restricted mode (suid, non-root user). This is done in + * mnt_context_prepare_mount() by default. + * + * We have to read fstab before nfsmount.conf, otherwise the options + * from nfsmount.conf will be ignored (overwrited). + */ + rc = mnt_context_apply_fstab(cxt); + if (rc) { + nfs_error(_("%s: failed to apply fstab options\n"), progname); + goto err; + } + /* * Concatenate mount options from the configuration file */