[XFS] Reverse the sense of COMPAT_ATTR and ATTR2, keeps it simple and
authorNathan Scott <nathans@sgi.com>
Wed, 11 Jan 2006 04:32:01 +0000 (15:32 +1100)
committerNathan Scott <nathans@sgi.com>
Wed, 11 Jan 2006 04:32:01 +0000 (15:32 +1100)
consistent.

SGI-PV: 941645
SGI-Modid: xfs-linux-melb:xfs-kern:202961a

Signed-off-by: Nathan Scott <nathans@sgi.com>
fs/xfs/xfs_attr_leaf.c
fs/xfs/xfs_bmap.c
fs/xfs/xfs_clnt.h
fs/xfs/xfs_dir.c
fs/xfs/xfs_mount.h
fs/xfs/xfs_vfsops.c

index 1c7421840c1802441b5345ec766727a0f874b9eb..fe91eac4e2a7b1919228ec9f063a2946e37ec908 100644 (file)
@@ -128,7 +128,7 @@ xfs_attr_shortform_bytesfit(xfs_inode_t *dp, int bytes)
                return (offset >= minforkoff) ? minforkoff : 0;
        }
 
-       if (unlikely(mp->m_flags & XFS_MOUNT_COMPAT_ATTR)) {
+       if (!(mp->m_flags & XFS_MOUNT_ATTR2)) {
                if (bytes <= XFS_IFORK_ASIZE(dp))
                        return mp->m_attroffset >> 3;
                return 0;
@@ -157,7 +157,7 @@ xfs_sbversion_add_attr2(xfs_mount_t *mp, xfs_trans_t *tp)
 {
        unsigned long s;
 
-       if (!(mp->m_flags & XFS_MOUNT_COMPAT_ATTR) &&
+       if ((mp->m_flags & XFS_MOUNT_ATTR2) &&
            !(XFS_SB_VERSION_HASATTR2(&mp->m_sb))) {
                s = XFS_SB_LOCK(mp);
                if (!XFS_SB_VERSION_HASATTR2(&mp->m_sb)) {
@@ -311,7 +311,7 @@ xfs_attr_shortform_remove(xfs_da_args_t *args)
         */
        totsize -= size;
        if (totsize == sizeof(xfs_attr_sf_hdr_t) && !args->addname &&
-           !(mp->m_flags & XFS_MOUNT_COMPAT_ATTR)) {
+           (mp->m_flags & XFS_MOUNT_ATTR2)) {
                /*
                 * Last attribute now removed, revert to original
                 * inode format making all literal area available
@@ -330,7 +330,7 @@ xfs_attr_shortform_remove(xfs_da_args_t *args)
                dp->i_d.di_forkoff = xfs_attr_shortform_bytesfit(dp, totsize);
                ASSERT(dp->i_d.di_forkoff);
                ASSERT(totsize > sizeof(xfs_attr_sf_hdr_t) || args->addname ||
-                       (mp->m_flags & XFS_MOUNT_COMPAT_ATTR));
+                       !(mp->m_flags & XFS_MOUNT_ATTR2));
                dp->i_afp->if_ext_max =
                        XFS_IFORK_ASIZE(dp) / (uint)sizeof(xfs_bmbt_rec_t);
                dp->i_df.if_ext_max =
@@ -739,7 +739,7 @@ xfs_attr_shortform_allfit(xfs_dabuf_t *bp, xfs_inode_t *dp)
                                + name_loc->namelen
                                + INT_GET(name_loc->valuelen, ARCH_CONVERT);
        }
-       if (!(dp->i_mount->m_flags & XFS_MOUNT_COMPAT_ATTR) &&
+       if ((dp->i_mount->m_flags & XFS_MOUNT_ATTR2) &&
            (bytes == sizeof(struct xfs_attr_sf_hdr)))
                return(-1);
        return(xfs_attr_shortform_bytesfit(dp, bytes));
@@ -778,7 +778,7 @@ xfs_attr_leaf_to_shortform(xfs_dabuf_t *bp, xfs_da_args_t *args, int forkoff)
                goto out;
 
        if (forkoff == -1) {
-               ASSERT(!(dp->i_mount->m_flags & XFS_MOUNT_COMPAT_ATTR));
+               ASSERT(dp->i_mount->m_flags & XFS_MOUNT_ATTR2);
 
                /*
                 * Last attribute was removed, revert to original
index 8a32d65211b081fad7edfac85a95eec5303a7b23..8ac170b828f57110e283aa4f7cedde0103f300cc 100644 (file)
@@ -3948,7 +3948,7 @@ xfs_bmap_add_attrfork(
                ip->i_d.di_forkoff = xfs_attr_shortform_bytesfit(ip, size);
                if (!ip->i_d.di_forkoff)
                        ip->i_d.di_forkoff = mp->m_attroffset >> 3;
-               else if (!(mp->m_flags & XFS_MOUNT_COMPAT_ATTR))
+               else if (mp->m_flags & XFS_MOUNT_ATTR2)
                        version = 2;
                break;
        default:
@@ -4096,13 +4096,13 @@ xfs_bmap_compute_maxlevels(
         */
        if (whichfork == XFS_DATA_FORK) {
                maxleafents = MAXEXTNUM;
-               sz = (mp->m_flags & XFS_MOUNT_COMPAT_ATTR) ?
-                       mp->m_attroffset : XFS_BMDR_SPACE_CALC(MINDBTPTRS);
+               sz = (mp->m_flags & XFS_MOUNT_ATTR2) ?
+                       XFS_BMDR_SPACE_CALC(MINDBTPTRS) : mp->m_attroffset;
        } else {
                maxleafents = MAXAEXTNUM;
-               sz = (mp->m_flags & XFS_MOUNT_COMPAT_ATTR) ?
-                       mp->m_sb.sb_inodesize - mp->m_attroffset :
-                       XFS_BMDR_SPACE_CALC(MINABTPTRS);
+               sz = (mp->m_flags & XFS_MOUNT_ATTR2) ?
+                       XFS_BMDR_SPACE_CALC(MINABTPTRS) :
+                       mp->m_sb.sb_inodesize - mp->m_attroffset;
        }
        maxrootrecs = (int)XFS_BTREE_BLOCK_MAXRECS(sz, xfs_bmdr, 0);
        minleafrecs = mp->m_bmap_dmnr[0];
index 328a528b926d0ed028953b5cfb6f102a293efba1..f57cc9ac875ec6b6daecf472ed1cf580fe3ac72d 100644 (file)
@@ -57,7 +57,7 @@ struct xfs_mount_args {
 /*
  * XFS mount option flags -- args->flags1
  */
-#define        XFSMNT_COMPAT_ATTR      0x00000001      /* do not use ATTR2 format */
+#define        XFSMNT_ATTR2            0x00000001      /* allow ATTR2 EA format */
 #define        XFSMNT_WSYNC            0x00000002      /* safe mode nfs mount
                                                 * compatible */
 #define        XFSMNT_INO64            0x00000004      /* move inode numbers up
index 3dd30391f55119b3ba7dd4cfe85b6e29cbc9b323..bb87d2a700a955dae24bce8b7c10ce9ce19c5e9e 100644 (file)
@@ -176,7 +176,7 @@ xfs_dir_mount(xfs_mount_t *mp)
        uint shortcount, leafcount, count;
 
        mp->m_dirversion = 1;
-       if (mp->m_flags & XFS_MOUNT_COMPAT_ATTR) {
+       if (!(mp->m_flags & XFS_MOUNT_ATTR2)) {
                shortcount = (mp->m_attroffset -
                                (uint)sizeof(xfs_dir_sf_hdr_t)) /
                                 (uint)sizeof(xfs_dir_sf_entry_t);
index 3432fd5a3986745ebee217f9ba84a0797853318f..fbfa240bd13945eac949f72a1cb4e6771577d6fb 100644 (file)
@@ -393,7 +393,7 @@ typedef struct xfs_mount {
                                                   user */
 #define XFS_MOUNT_NOALIGN      (1ULL << 7)     /* turn off stripe alignment
                                                   allocations */
-#define XFS_MOUNT_COMPAT_ATTR  (1ULL << 8)     /* do not use attr2 format */
+#define XFS_MOUNT_ATTR2                (1ULL << 8)     /* allow use of attr2 format */
                             /* (1ULL << 9)     -- currently unused */
 #define XFS_MOUNT_NORECOVERY   (1ULL << 10)    /* no recovery - dirty fs */
 #define XFS_MOUNT_SHARED       (1ULL << 11)    /* shared mount */
index dcdb0a8578e174078a8540e3ece88a75baa4f64d..aef4ec441e0c821a7cec4acc6ee821bf2381d15a 100644 (file)
@@ -291,8 +291,8 @@ xfs_start_flags(
                mp->m_flags |= XFS_MOUNT_IDELETE;
        if (ap->flags & XFSMNT_DIRSYNC)
                mp->m_flags |= XFS_MOUNT_DIRSYNC;
-       if (ap->flags & XFSMNT_COMPAT_ATTR)
-               mp->m_flags |= XFS_MOUNT_COMPAT_ATTR;
+       if (ap->flags & XFSMNT_ATTR2)
+               mp->m_flags |= XFS_MOUNT_ATTR2;
 
        if (ap->flags2 & XFSMNT2_COMPAT_IOSIZE)
                mp->m_flags |= XFS_MOUNT_COMPAT_IOSIZE;
@@ -350,6 +350,10 @@ xfs_finish_flags(
                }
        }
 
+       if (XFS_SB_VERSION_HASATTR2(&mp->m_sb)) {
+               mp->m_flags |= XFS_MOUNT_ATTR2;
+       }
+
        /*
         * prohibit r/w mounts of read-only filesystems
         */
@@ -385,10 +389,6 @@ xfs_finish_flags(
                        return XFS_ERROR(EINVAL);
        }
 
-       if (XFS_SB_VERSION_HASATTR2(&mp->m_sb)) {
-               mp->m_flags &= ~XFS_MOUNT_COMPAT_ATTR;
-       }
-
        return 0;
 }
 
@@ -1690,7 +1690,6 @@ xfs_parseargs(
        int                     iosize;
 
        args->flags2 |= XFSMNT2_COMPAT_IOSIZE;
-       args->flags |= XFSMNT_COMPAT_ATTR;
        args->flags |= XFSMNT_BARRIER;
 
 #if 0  /* XXX: off by default, until some remaining issues ironed out */
@@ -1828,9 +1827,9 @@ xfs_parseargs(
                } else if (!strcmp(this_char, MNTOPT_NOLARGEIO)) {
                        args->flags2 |= XFSMNT2_COMPAT_IOSIZE;
                } else if (!strcmp(this_char, MNTOPT_ATTR2)) {
-                       args->flags &= ~XFSMNT_COMPAT_ATTR;
+                       args->flags |= XFSMNT_ATTR2;
                } else if (!strcmp(this_char, MNTOPT_NOATTR2)) {
-                       args->flags |= XFSMNT_COMPAT_ATTR;
+                       args->flags &= ~XFSMNT_ATTR2;
                } else if (!strcmp(this_char, "osyncisdsync")) {
                        /* no-op, this is now the default */
 printk("XFS: osyncisdsync is now the default, option is deprecated.\n");
@@ -1941,8 +1940,6 @@ xfs_showargs(
                seq_printf(m, "," MNTOPT_SWIDTH "=%d",
                                (int)XFS_FSB_TO_BB(mp, mp->m_swidth));
 
-       if (!(mp->m_flags & XFS_MOUNT_COMPAT_ATTR))
-               seq_printf(m, "," MNTOPT_ATTR2);
        if (!(mp->m_flags & XFS_MOUNT_COMPAT_IOSIZE))
                seq_printf(m, "," MNTOPT_LARGEIO);
        if (!(mp->m_flags & XFS_MOUNT_BARRIER))