return PTR_ERR(filp);
        }
 
-       if (inode->i_mode & S_IFREG) {
+       if (S_ISREG(inode->i_mode)) {
                filp->f_flags |= O_NOATIME;
                filp->f_mode |= FMODE_NOCMTIME;
        }
 
         * directory and pip is NULL.
         */
        ASSERT(ip && ((S_ISREG(ip->i_d.di_mode) && pip &&
-                      (pip->i_d.di_mode & S_IFDIR)) ||
-                     ((ip->i_d.di_mode & S_IFDIR) && !pip)));
+                      S_ISDIR(pip->i_d.di_mode)) ||
+                     (S_ISDIR(ip->i_d.di_mode) && !pip)));
 
        mp = ip->i_mount;
        cache = mp->m_filestream;
        xfs_agnumber_t  ag;
        int             ref;
 
-       if (!(ip->i_d.di_mode & (S_IFREG | S_IFDIR))) {
+       if (!S_ISREG(ip->i_d.di_mode) && !S_ISDIR(ip->i_d.di_mode)) {
                ASSERT(0);
                return NULLAGNUMBER;
        }
        xfs_agnumber_t  ag, rotorstep, startag;
        int             err = 0;
 
-       ASSERT(pip->i_d.di_mode & S_IFDIR);
-       ASSERT(ip->i_d.di_mode & S_IFREG);
-       if (!(pip->i_d.di_mode & S_IFDIR) || !(ip->i_d.di_mode & S_IFREG))
+       ASSERT(S_ISDIR(pip->i_d.di_mode));
+       ASSERT(S_ISREG(ip->i_d.di_mode));
+       if (!S_ISDIR(pip->i_d.di_mode) || !S_ISREG(ip->i_d.di_mode))
                return -EINVAL;
 
        mp = pip->i_mount;