From: Dan Carpenter <error27@gmail.com>
To: djwong@kernel.org
Cc: linux-xfs@vger.kernel.org
Subject: [bug report] xfs: allow setting and clearing of log incompat feature flags
Date: Tue, 17 Jan 2023 13:56:11 +0300 [thread overview]
Message-ID: <Y8Z+y9j2nT6bQ0Hz@kili> (raw)
Hello Darrick J. Wong,
The patch 908ce71e54f8: "xfs: allow setting and clearing of log
incompat feature flags" from Aug 8, 2021, leads to the following
Smatch static checker warning:
fs/xfs/xfs_mount.c:1315 xfs_add_incompat_log_feature()
warn: missing error code 'error'
fs/xfs/xfs_mount.c
1280 int
1281 xfs_add_incompat_log_feature(
1282 struct xfs_mount *mp,
1283 uint32_t feature)
1284 {
1285 struct xfs_dsb *dsb;
1286 int error;
1287
1288 ASSERT(hweight32(feature) == 1);
1289 ASSERT(!(feature & XFS_SB_FEAT_INCOMPAT_LOG_UNKNOWN));
1290
1291 /*
1292 * Force the log to disk and kick the background AIL thread to reduce
1293 * the chances that the bwrite will stall waiting for the AIL to unpin
1294 * the primary superblock buffer. This isn't a data integrity
1295 * operation, so we don't need a synchronous push.
1296 */
1297 error = xfs_log_force(mp, XFS_LOG_SYNC);
1298 if (error)
1299 return error;
1300 xfs_ail_push_all(mp->m_ail);
1301
1302 /*
1303 * Lock the primary superblock buffer to serialize all callers that
1304 * are trying to set feature bits.
1305 */
1306 xfs_buf_lock(mp->m_sb_bp);
1307 xfs_buf_hold(mp->m_sb_bp);
1308
1309 if (xfs_is_shutdown(mp)) {
1310 error = -EIO;
1311 goto rele;
1312 }
1313
1314 if (xfs_sb_has_incompat_log_feature(&mp->m_sb, feature))
--> 1315 goto rele;
^^^^^^^^^
It's not clear to me, why this old code is suddenly showing up as a new
warning... But it does feel like it should be an error path.
1316
1317 /*
1318 * Write the primary superblock to disk immediately, because we need
1319 * the log_incompat bit to be set in the primary super now to protect
1320 * the log items that we're going to commit later.
1321 */
1322 dsb = mp->m_sb_bp->b_addr;
1323 xfs_sb_to_disk(dsb, &mp->m_sb);
1324 dsb->sb_features_log_incompat |= cpu_to_be32(feature);
1325 error = xfs_bwrite(mp->m_sb_bp);
1326 if (error)
1327 goto shutdown;
1328
1329 /*
1330 * Add the feature bits to the incore superblock before we unlock the
1331 * buffer.
1332 */
1333 xfs_sb_add_incompat_log_features(&mp->m_sb, feature);
1334 xfs_buf_relse(mp->m_sb_bp);
1335
1336 /* Log the superblock to disk. */
1337 return xfs_sync_sb(mp, false);
1338 shutdown:
1339 xfs_force_shutdown(mp, SHUTDOWN_META_IO_ERROR);
1340 rele:
1341 xfs_buf_relse(mp->m_sb_bp);
1342 return error;
1343 }
regards,
dan carpenter
next reply other threads:[~2023-01-17 10:56 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-17 10:56 Dan Carpenter [this message]
2023-01-17 21:07 ` [bug report] xfs: allow setting and clearing of log incompat feature flags Dave Chinner
2023-01-17 23:41 ` Darrick J. Wong
2023-01-18 8:31 ` Dan Carpenter
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Y8Z+y9j2nT6bQ0Hz@kili \
--to=error27@gmail.com \
--cc=djwong@kernel.org \
--cc=linux-xfs@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.