Re: svn commit: r213664 - in head/sys: fs/cd9660 fs/hpfs fs/msdosfs fs/ntfs gnu/fs/reiserfs kern sys ufs/ffs ufs/ufs

2010-10-12 Thread Bruce Evans

On Sun, 10 Oct 2010, Konstantin Belousov wrote:


Log:
 The r184588 changed the layout of struct export_args, causing an ABI
 breakage for old mount(2) syscall, since most struct _args
 embed export_args. The mount(2) is supposed to provide ABI
 compatibility for pre-nmount mount(8) binaries, so restore ABI to
 pre-r184588.

 Requested and reviewed by: bde
 MFC after:2 weeks


Thanks.

Bruce
___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r213664 - in head/sys: fs/cd9660 fs/hpfs fs/msdosfs fs/ntfs gnu/fs/reiserfs kern sys ufs/ffs ufs/ufs

2010-10-10 Thread Konstantin Belousov
Author: kib
Date: Sun Oct 10 07:05:47 2010
New Revision: 213664
URL: http://svn.freebsd.org/changeset/base/213664

Log:
  The r184588 changed the layout of struct export_args, causing an ABI
  breakage for old mount(2) syscall, since most struct _args
  embed export_args. The mount(2) is supposed to provide ABI
  compatibility for pre-nmount mount(8) binaries, so restore ABI to
  pre-r184588.
  
  Requested and reviewed by:bde
  MFC after:2 weeks

Modified:
  head/sys/fs/cd9660/cd9660_mount.h
  head/sys/fs/cd9660/cd9660_vfsops.c
  head/sys/fs/hpfs/hpfs_vfsops.c
  head/sys/fs/hpfs/hpfsmount.h
  head/sys/fs/msdosfs/msdosfs_vfsops.c
  head/sys/fs/msdosfs/msdosfsmount.h
  head/sys/fs/ntfs/ntfs_vfsops.c
  head/sys/fs/ntfs/ntfsmount.h
  head/sys/gnu/fs/reiserfs/reiserfs_mount.h
  head/sys/gnu/fs/reiserfs/reiserfs_vfsops.c
  head/sys/kern/vfs_mount.c
  head/sys/sys/mount.h
  head/sys/ufs/ffs/ffs_vfsops.c
  head/sys/ufs/ufs/ufsmount.h

Modified: head/sys/fs/cd9660/cd9660_mount.h
==
--- head/sys/fs/cd9660/cd9660_mount.h   Sat Oct  9 20:52:36 2010
(r213663)
+++ head/sys/fs/cd9660/cd9660_mount.h   Sun Oct 10 07:05:47 2010
(r213664)
@@ -40,7 +40,7 @@
  */
 struct iso_args {
char*fspec; /* block special device to mount */
-   struct  export_args export; /* network export info */
+   struct  oexport_args export;/* network export info */
int flags;  /* mounting flags, see below */
int ssector;/* starting sector, 0 for 1st session */
char*cs_disk;   /* disk charset for Joliet cs 
conversion */

Modified: head/sys/fs/cd9660/cd9660_vfsops.c
==
--- head/sys/fs/cd9660/cd9660_vfsops.c  Sat Oct  9 20:52:36 2010
(r213663)
+++ head/sys/fs/cd9660/cd9660_vfsops.c  Sun Oct 10 07:05:47 2010
(r213664)
@@ -98,14 +98,16 @@ static int
 cd9660_cmount(struct mntarg *ma, void *data, int flags)
 {
struct iso_args args;
+   struct export_args exp;
int error;
 
error = copyin(data, &args, sizeof args);
if (error)
return (error);
+   vfs_oexport_conv(&args.export, &exp);
 
ma = mount_argsu(ma, "from", args.fspec, MAXPATHLEN);
-   ma = mount_arg(ma, "export", &args.export, sizeof args.export);
+   ma = mount_arg(ma, "export", &exp, sizeof(exp));
ma = mount_argsu(ma, "cs_disk", args.cs_disk, 64);
ma = mount_argsu(ma, "cs_local", args.cs_local, 64);
ma = mount_argf(ma, "ssector", "%u", args.ssector);

Modified: head/sys/fs/hpfs/hpfs_vfsops.c
==
--- head/sys/fs/hpfs/hpfs_vfsops.c  Sat Oct  9 20:52:36 2010
(r213663)
+++ head/sys/fs/hpfs/hpfs_vfsops.c  Sun Oct 10 07:05:47 2010
(r213664)
@@ -76,14 +76,16 @@ hpfs_cmount ( 
int flags)
 {
struct hpfs_args args;
+   struct export_args exp;
int error;
 
error = copyin(data, (caddr_t)&args, sizeof (struct hpfs_args));
if (error)
return (error);
+   vfs_oexport_conv(&args.export, &exp);
 
ma = mount_argsu(ma, "from", args.fspec, MAXPATHLEN);
-   ma = mount_arg(ma, "export", &args.export, sizeof args.export);
+   ma = mount_arg(ma, "export", &exp, sizeof(exp));
ma = mount_argf(ma, "uid", "%d", args.uid);
ma = mount_argf(ma, "gid", "%d", args.gid);
ma = mount_argf(ma, "mode", "%d", args.mode);

Modified: head/sys/fs/hpfs/hpfsmount.h
==
--- head/sys/fs/hpfs/hpfsmount.hSat Oct  9 20:52:36 2010
(r213663)
+++ head/sys/fs/hpfs/hpfsmount.hSun Oct 10 07:05:47 2010
(r213664)
@@ -29,7 +29,7 @@
 #define HPFSMNT_TABLES 0x0001
 struct hpfs_args {
char*fspec; /* block special device to mount */
-   struct  export_args export; /* network export information */
+   struct  oexport_args export;/* network export information */
uid_t   uid;/* uid that owns hpfs files */
gid_t   gid;/* gid that owns hpfs files */
mode_t  mode;   /* mask to be applied for hpfs perms */

Modified: head/sys/fs/msdosfs/msdosfs_vfsops.c
==
--- head/sys/fs/msdosfs/msdosfs_vfsops.cSat Oct  9 20:52:36 2010
(r213663)
+++ head/sys/fs/msdosfs/msdosfs_vfsops.cSun Oct 10 07:05:47 2010
(r213664)
@@ -200,6 +200,7 @@ static int
 msdosfs_cmount(struct mntarg *ma, void *data, int flags)
 {
struct msdosfs_args args;
+   struct export_args exp;
int error;
 
if (data == NULL)
@@ -207,9 +208,10