svn commit: r188624 - in stable/7/sys: . contrib/pf dev/cxgb ufs/ffs

Konstantin Belousov kib at FreeBSD.org
Sat Feb 14 15:45:25 PST 2009


Author: kib
Date: Sat Feb 14 23:45:24 2009
New Revision: 188624
URL: http://svn.freebsd.org/changeset/base/188624

Log:
  MFC r186897:
  If unmount of the ffs mp failed, reinitialize the extended attributes
  for the mp, and restart them if autostart is enabled.

Modified:
  stable/7/sys/   (props changed)
  stable/7/sys/contrib/pf/   (props changed)
  stable/7/sys/dev/cxgb/   (props changed)
  stable/7/sys/ufs/ffs/ffs_vfsops.c

Modified: stable/7/sys/ufs/ffs/ffs_vfsops.c
==============================================================================
--- stable/7/sys/ufs/ffs/ffs_vfsops.c	Sat Feb 14 23:22:37 2009	(r188623)
+++ stable/7/sys/ufs/ffs/ffs_vfsops.c	Sat Feb 14 23:45:24 2009	(r188624)
@@ -1030,6 +1030,9 @@ ffs_unmount(mp, mntflags, td)
 	struct ufsmount *ump = VFSTOUFS(mp);
 	struct fs *fs;
 	int error, flags, susp;
+#ifdef UFS_EXTATTR
+	int e_restart;
+#endif
 
 	flags = 0;
 	fs = ump->um_fs;
@@ -1043,8 +1046,10 @@ ffs_unmount(mp, mntflags, td)
 		if (error != EOPNOTSUPP)
 			printf("ffs_unmount: ufs_extattr_stop returned %d\n",
 			    error);
+		e_restart = 0;
 	} else {
 		ufs_extattr_uepm_destroy(&ump->um_extattr);
+		e_restart = 1;
 	}
 #endif
 	if (susp) {
@@ -1121,6 +1126,15 @@ fail:
 		vfs_write_resume(mp);
 		vn_start_write(NULL, &mp, V_WAIT);
 	}
+#ifdef UFS_EXTATTR
+	if (e_restart) {
+		ufs_extattr_uepm_init(&ump->um_extattr);
+#ifdef UFS_EXTATTR_AUTOSTART
+		(void) ufs_extattr_autostart(mp, td);
+#endif
+	}
+#endif
+
 	return (error);
 }
 


More information about the svn-src-stable-7 mailing list