Hi All,

This is a patch to mount.c to allow the file-system caching 'fsc' flag
for NFS mounts. FS-Cache is new in the 2.6.30 kernel. Note that this
changes the behaviour of the mount sys-call to pass through a string
and not a struct anymore; it makes the code match what nfs-utils does
- at least for NFS3.

--- orig/util-linux/mount.c     2009-05-09 13:35:41.854799281 +0200
+++ mod/util-linux/mount.c      2009-05-09 13:33:23.147299934 +0200
@@ -991,8 +991,9 @@ static int nfsmount(struct mntent *mp, l
        mclient = NULL;

        /* NB: hostname, mounthost, filteropts must be free()d prior to return 
*/
-
-       filteropts = xstrdup(filteropts); /* going to trash it later... */
+
+       free(mp->mnt_opts);
+       mp->mnt_opts = xstrdup(filteropts); /* going to trash it later... */

        hostname = xstrdup(mp->mnt_fsname);
        /* mount_main() guarantees that ':' is there */
@@ -1035,7 +1036,6 @@ static int nfsmount(struct mntent *mp, l
                free(mp->mnt_opts);
                mp->mnt_opts = tmp;
        }
-
        /* Set default options.
         * rsize/wsize (and bsize, for ver >= 3) are left 0 in order to
         * let the kernel decide.
@@ -1190,7 +1190,8 @@ static int nfsmount(struct mntent *mp, l
                                "tcp\0"
                                "udp\0"
                                "lock\0"
-                               "rdirplus\0";
+                               "rdirplus\0"
+                               "fsc\0";
                        int val = 1;
                        if (!strncmp(opt, "no", 2)) {
                                val = 0;
@@ -1240,6 +1241,8 @@ static int nfsmount(struct mntent *mp, l
                        case 11: //rdirplus
                                nordirplus = !val;
                                break;
+                       case 12: //fsc
+                               break;
                        default:
                                bb_error_msg("unknown nfs mount option: %s%s", 
val ? "" : "no", opt);
                                goto fail;
@@ -1538,7 +1541,7 @@ static int nfsmount(struct mntent *mp, l
  do_mount: /* perform actual mount */

        mp->mnt_type = (char*)"nfs";
-       retval = mount_it_now(mp, vfsflags, (char*)&data);
+       retval = mount_it_now(mp, vfsflags, (char*)mp->mnt_opts);
        goto ret;

  fail: /* abort */

--

Roland Arnold
_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to