diff options
-rw-r--r-- | fs/xfs/xfs_sb.h | 220 |
1 files changed, 76 insertions, 144 deletions
diff --git a/fs/xfs/xfs_sb.h b/fs/xfs/xfs_sb.h index f7b2fe77c5a5..57f6ba13d19f 100644 --- a/fs/xfs/xfs_sb.h +++ b/fs/xfs/xfs_sb.h | |||
@@ -36,8 +36,6 @@ struct xfs_trans; | |||
36 | #define XFS_SB_VERSION_5 5 /* CRC enabled filesystem */ | 36 | #define XFS_SB_VERSION_5 5 /* CRC enabled filesystem */ |
37 | #define XFS_SB_VERSION_NUMBITS 0x000f | 37 | #define XFS_SB_VERSION_NUMBITS 0x000f |
38 | #define XFS_SB_VERSION_ALLFBITS 0xfff0 | 38 | #define XFS_SB_VERSION_ALLFBITS 0xfff0 |
39 | #define XFS_SB_VERSION_SASHFBITS 0xf000 | ||
40 | #define XFS_SB_VERSION_REALFBITS 0x0ff0 | ||
41 | #define XFS_SB_VERSION_ATTRBIT 0x0010 | 39 | #define XFS_SB_VERSION_ATTRBIT 0x0010 |
42 | #define XFS_SB_VERSION_NLINKBIT 0x0020 | 40 | #define XFS_SB_VERSION_NLINKBIT 0x0020 |
43 | #define XFS_SB_VERSION_QUOTABIT 0x0040 | 41 | #define XFS_SB_VERSION_QUOTABIT 0x0040 |
@@ -50,24 +48,14 @@ struct xfs_trans; | |||
50 | #define XFS_SB_VERSION_DIRV2BIT 0x2000 | 48 | #define XFS_SB_VERSION_DIRV2BIT 0x2000 |
51 | #define XFS_SB_VERSION_BORGBIT 0x4000 /* ASCII only case-insens. */ | 49 | #define XFS_SB_VERSION_BORGBIT 0x4000 /* ASCII only case-insens. */ |
52 | #define XFS_SB_VERSION_MOREBITSBIT 0x8000 | 50 | #define XFS_SB_VERSION_MOREBITSBIT 0x8000 |
53 | #define XFS_SB_VERSION_OKSASHFBITS \ | 51 | |
54 | (XFS_SB_VERSION_EXTFLGBIT | \ | 52 | /* |
55 | XFS_SB_VERSION_DIRV2BIT | \ | 53 | * Supported feature bit list is just all bits in the versionnum field because |
56 | XFS_SB_VERSION_BORGBIT) | 54 | * we've used them all up and understand them all. |
57 | #define XFS_SB_VERSION_OKREALFBITS \ | 55 | */ |
58 | (XFS_SB_VERSION_ATTRBIT | \ | 56 | #define XFS_SB_VERSION_OKBITS \ |
59 | XFS_SB_VERSION_NLINKBIT | \ | 57 | (XFS_SB_VERSION_NUMBITS | \ |
60 | XFS_SB_VERSION_QUOTABIT | \ | 58 | XFS_SB_VERSION_ALLFBITS) |
61 | XFS_SB_VERSION_ALIGNBIT | \ | ||
62 | XFS_SB_VERSION_DALIGNBIT | \ | ||
63 | XFS_SB_VERSION_SHAREDBIT | \ | ||
64 | XFS_SB_VERSION_LOGV2BIT | \ | ||
65 | XFS_SB_VERSION_SECTORBIT | \ | ||
66 | XFS_SB_VERSION_MOREBITSBIT) | ||
67 | #define XFS_SB_VERSION_OKREALBITS \ | ||
68 | (XFS_SB_VERSION_NUMBITS | \ | ||
69 | XFS_SB_VERSION_OKREALFBITS | \ | ||
70 | XFS_SB_VERSION_OKSASHFBITS) | ||
71 | 59 | ||
72 | /* | 60 | /* |
73 | * There are two words to hold XFS "feature" bits: the original | 61 | * There are two words to hold XFS "feature" bits: the original |
@@ -76,7 +64,6 @@ struct xfs_trans; | |||
76 | * | 64 | * |
77 | * These defines represent bits in sb_features2. | 65 | * These defines represent bits in sb_features2. |
78 | */ | 66 | */ |
79 | #define XFS_SB_VERSION2_REALFBITS 0x00ffffff /* Mask: features */ | ||
80 | #define XFS_SB_VERSION2_RESERVED1BIT 0x00000001 | 67 | #define XFS_SB_VERSION2_RESERVED1BIT 0x00000001 |
81 | #define XFS_SB_VERSION2_LAZYSBCOUNTBIT 0x00000002 /* Superblk counters */ | 68 | #define XFS_SB_VERSION2_LAZYSBCOUNTBIT 0x00000002 /* Superblk counters */ |
82 | #define XFS_SB_VERSION2_RESERVED4BIT 0x00000004 | 69 | #define XFS_SB_VERSION2_RESERVED4BIT 0x00000004 |
@@ -86,16 +73,11 @@ struct xfs_trans; | |||
86 | #define XFS_SB_VERSION2_CRCBIT 0x00000100 /* metadata CRCs */ | 73 | #define XFS_SB_VERSION2_CRCBIT 0x00000100 /* metadata CRCs */ |
87 | #define XFS_SB_VERSION2_FTYPE 0x00000200 /* inode type in dir */ | 74 | #define XFS_SB_VERSION2_FTYPE 0x00000200 /* inode type in dir */ |
88 | 75 | ||
89 | #define XFS_SB_VERSION2_OKREALFBITS \ | 76 | #define XFS_SB_VERSION2_OKBITS \ |
90 | (XFS_SB_VERSION2_LAZYSBCOUNTBIT | \ | 77 | (XFS_SB_VERSION2_LAZYSBCOUNTBIT | \ |
91 | XFS_SB_VERSION2_ATTR2BIT | \ | 78 | XFS_SB_VERSION2_ATTR2BIT | \ |
92 | XFS_SB_VERSION2_PROJID32BIT | \ | 79 | XFS_SB_VERSION2_PROJID32BIT | \ |
93 | XFS_SB_VERSION2_FTYPE) | 80 | XFS_SB_VERSION2_FTYPE) |
94 | #define XFS_SB_VERSION2_OKSASHFBITS \ | ||
95 | (0) | ||
96 | #define XFS_SB_VERSION2_OKREALBITS \ | ||
97 | (XFS_SB_VERSION2_OKREALFBITS | \ | ||
98 | XFS_SB_VERSION2_OKSASHFBITS ) | ||
99 | 81 | ||
100 | /* | 82 | /* |
101 | * Superblock - in core version. Must match the ondisk version below. | 83 | * Superblock - in core version. Must match the ondisk version below. |
@@ -345,214 +327,164 @@ typedef enum { | |||
345 | 327 | ||
346 | #define XFS_SB_VERSION_NUM(sbp) ((sbp)->sb_versionnum & XFS_SB_VERSION_NUMBITS) | 328 | #define XFS_SB_VERSION_NUM(sbp) ((sbp)->sb_versionnum & XFS_SB_VERSION_NUMBITS) |
347 | 329 | ||
348 | static inline int xfs_sb_good_version(xfs_sb_t *sbp) | 330 | /* |
331 | * The first XFS version we support is a v4 superblock with V2 directories. | ||
332 | */ | ||
333 | static inline bool xfs_sb_good_v4_features(struct xfs_sb *sbp) | ||
349 | { | 334 | { |
350 | /* We always support version 1-3 */ | 335 | if (!(sbp->sb_versionnum & XFS_SB_VERSION_DIRV2BIT)) |
351 | if (sbp->sb_versionnum >= XFS_SB_VERSION_1 && | 336 | return false; |
352 | sbp->sb_versionnum <= XFS_SB_VERSION_3) | ||
353 | return 1; | ||
354 | 337 | ||
355 | /* We support version 4 if all feature bits are supported */ | 338 | /* check for unknown features in the fs */ |
356 | if (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) { | 339 | if ((sbp->sb_versionnum & ~XFS_SB_VERSION_OKBITS) || |
357 | if ((sbp->sb_versionnum & ~XFS_SB_VERSION_OKREALBITS) || | 340 | ((sbp->sb_versionnum & XFS_SB_VERSION_MOREBITSBIT) && |
358 | ((sbp->sb_versionnum & XFS_SB_VERSION_MOREBITSBIT) && | 341 | (sbp->sb_features2 & ~XFS_SB_VERSION2_OKBITS))) |
359 | (sbp->sb_features2 & ~XFS_SB_VERSION2_OKREALBITS))) | 342 | return false; |
360 | return 0; | ||
361 | 343 | ||
362 | if (sbp->sb_shared_vn > XFS_SB_MAX_SHARED_VN) | 344 | /* We don't support shared superblocks - nobody knows what it is */ |
363 | return 0; | 345 | if (sbp->sb_versionnum & XFS_SB_VERSION_SHAREDBIT) |
364 | return 1; | 346 | return false; |
365 | } | ||
366 | if (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5) | ||
367 | return 1; | ||
368 | 347 | ||
369 | return 0; | 348 | return true; |
349 | } | ||
350 | |||
351 | static inline bool xfs_sb_good_version(struct xfs_sb *sbp) | ||
352 | { | ||
353 | if (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5) | ||
354 | return true; | ||
355 | if (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) | ||
356 | return xfs_sb_good_v4_features(sbp); | ||
357 | return false; | ||
370 | } | 358 | } |
371 | 359 | ||
372 | /* | 360 | /* |
373 | * Detect a mismatched features2 field. Older kernels read/wrote | 361 | * Detect a mismatched features2 field. Older kernels read/wrote |
374 | * this into the wrong slot, so to be safe we keep them in sync. | 362 | * this into the wrong slot, so to be safe we keep them in sync. |
375 | */ | 363 | */ |
376 | static inline int xfs_sb_has_mismatched_features2(xfs_sb_t *sbp) | 364 | static inline bool xfs_sb_has_mismatched_features2(struct xfs_sb *sbp) |
377 | { | ||
378 | return (sbp->sb_bad_features2 != sbp->sb_features2); | ||
379 | } | ||
380 | |||
381 | static inline unsigned xfs_sb_version_tonew(unsigned v) | ||
382 | { | 365 | { |
383 | if (v == XFS_SB_VERSION_1) | 366 | return sbp->sb_bad_features2 != sbp->sb_features2; |
384 | return XFS_SB_VERSION_4; | ||
385 | |||
386 | if (v == XFS_SB_VERSION_2) | ||
387 | return XFS_SB_VERSION_4 | XFS_SB_VERSION_ATTRBIT; | ||
388 | |||
389 | return XFS_SB_VERSION_4 | XFS_SB_VERSION_ATTRBIT | | ||
390 | XFS_SB_VERSION_NLINKBIT; | ||
391 | } | 367 | } |
392 | 368 | ||
393 | static inline unsigned xfs_sb_version_toold(unsigned v) | 369 | static inline bool xfs_sb_version_hasattr(struct xfs_sb *sbp) |
394 | { | 370 | { |
395 | if (v & (XFS_SB_VERSION_QUOTABIT | XFS_SB_VERSION_ALIGNBIT)) | 371 | return (sbp->sb_versionnum & XFS_SB_VERSION_ATTRBIT); |
396 | return 0; | ||
397 | if (v & XFS_SB_VERSION_NLINKBIT) | ||
398 | return XFS_SB_VERSION_3; | ||
399 | if (v & XFS_SB_VERSION_ATTRBIT) | ||
400 | return XFS_SB_VERSION_2; | ||
401 | return XFS_SB_VERSION_1; | ||
402 | } | 372 | } |
403 | 373 | ||
404 | static inline int xfs_sb_version_hasattr(xfs_sb_t *sbp) | 374 | static inline void xfs_sb_version_addattr(struct xfs_sb *sbp) |
405 | { | 375 | { |
406 | return sbp->sb_versionnum == XFS_SB_VERSION_2 || | 376 | sbp->sb_versionnum |= XFS_SB_VERSION_ATTRBIT; |
407 | sbp->sb_versionnum == XFS_SB_VERSION_3 || | ||
408 | (XFS_SB_VERSION_NUM(sbp) >= XFS_SB_VERSION_4 && | ||
409 | (sbp->sb_versionnum & XFS_SB_VERSION_ATTRBIT)); | ||
410 | } | 377 | } |
411 | 378 | ||
412 | static inline void xfs_sb_version_addattr(xfs_sb_t *sbp) | 379 | static inline bool xfs_sb_version_hasnlink(struct xfs_sb *sbp) |
413 | { | 380 | { |
414 | if (sbp->sb_versionnum == XFS_SB_VERSION_1) | 381 | return (sbp->sb_versionnum & XFS_SB_VERSION_NLINKBIT); |
415 | sbp->sb_versionnum = XFS_SB_VERSION_2; | ||
416 | else if (XFS_SB_VERSION_NUM(sbp) >= XFS_SB_VERSION_4) | ||
417 | sbp->sb_versionnum |= XFS_SB_VERSION_ATTRBIT; | ||
418 | else | ||
419 | sbp->sb_versionnum = XFS_SB_VERSION_4 | XFS_SB_VERSION_ATTRBIT; | ||
420 | } | 382 | } |
421 | 383 | ||
422 | static inline int xfs_sb_version_hasnlink(xfs_sb_t *sbp) | 384 | static inline void xfs_sb_version_addnlink(struct xfs_sb *sbp) |
423 | { | 385 | { |
424 | return sbp->sb_versionnum == XFS_SB_VERSION_3 || | 386 | sbp->sb_versionnum |= XFS_SB_VERSION_NLINKBIT; |
425 | (XFS_SB_VERSION_NUM(sbp) >= XFS_SB_VERSION_4 && | ||
426 | (sbp->sb_versionnum & XFS_SB_VERSION_NLINKBIT)); | ||
427 | } | 387 | } |
428 | 388 | ||
429 | static inline void xfs_sb_version_addnlink(xfs_sb_t *sbp) | 389 | static inline bool xfs_sb_version_hasquota(struct xfs_sb *sbp) |
430 | { | 390 | { |
431 | if (sbp->sb_versionnum <= XFS_SB_VERSION_2) | 391 | return (sbp->sb_versionnum & XFS_SB_VERSION_QUOTABIT); |
432 | sbp->sb_versionnum = XFS_SB_VERSION_3; | ||
433 | else | ||
434 | sbp->sb_versionnum |= XFS_SB_VERSION_NLINKBIT; | ||
435 | } | 392 | } |
436 | 393 | ||
437 | static inline int xfs_sb_version_hasquota(xfs_sb_t *sbp) | 394 | static inline void xfs_sb_version_addquota(struct xfs_sb *sbp) |
438 | { | 395 | { |
439 | return XFS_SB_VERSION_NUM(sbp) >= XFS_SB_VERSION_4 && | 396 | sbp->sb_versionnum |= XFS_SB_VERSION_QUOTABIT; |
440 | (sbp->sb_versionnum & XFS_SB_VERSION_QUOTABIT); | ||
441 | } | 397 | } |
442 | 398 | ||
443 | static inline void xfs_sb_version_addquota(xfs_sb_t *sbp) | 399 | static inline bool xfs_sb_version_hasalign(struct xfs_sb *sbp) |
444 | { | 400 | { |
445 | if (XFS_SB_VERSION_NUM(sbp) >= XFS_SB_VERSION_4) | 401 | return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5 || |
446 | sbp->sb_versionnum |= XFS_SB_VERSION_QUOTABIT; | ||
447 | else | ||
448 | sbp->sb_versionnum = xfs_sb_version_tonew(sbp->sb_versionnum) | | ||
449 | XFS_SB_VERSION_QUOTABIT; | ||
450 | } | ||
451 | |||
452 | static inline int xfs_sb_version_hasalign(xfs_sb_t *sbp) | ||
453 | { | ||
454 | return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5) || | ||
455 | (XFS_SB_VERSION_NUM(sbp) >= XFS_SB_VERSION_4 && | ||
456 | (sbp->sb_versionnum & XFS_SB_VERSION_ALIGNBIT)); | 402 | (sbp->sb_versionnum & XFS_SB_VERSION_ALIGNBIT)); |
457 | } | 403 | } |
458 | 404 | ||
459 | static inline int xfs_sb_version_hasdalign(xfs_sb_t *sbp) | 405 | static inline bool xfs_sb_version_hasdalign(struct xfs_sb *sbp) |
460 | { | 406 | { |
461 | return XFS_SB_VERSION_NUM(sbp) >= XFS_SB_VERSION_4 && | 407 | return (sbp->sb_versionnum & XFS_SB_VERSION_DALIGNBIT); |
462 | (sbp->sb_versionnum & XFS_SB_VERSION_DALIGNBIT); | ||
463 | } | 408 | } |
464 | 409 | ||
465 | static inline int xfs_sb_version_hasshared(xfs_sb_t *sbp) | 410 | static inline bool xfs_sb_version_hasshared(struct xfs_sb *sbp) |
466 | { | 411 | { |
467 | return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && | 412 | return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && |
468 | (sbp->sb_versionnum & XFS_SB_VERSION_SHAREDBIT); | 413 | (sbp->sb_versionnum & XFS_SB_VERSION_SHAREDBIT); |
469 | } | 414 | } |
470 | 415 | ||
471 | static inline int xfs_sb_version_hasdirv2(xfs_sb_t *sbp) | 416 | static inline bool xfs_sb_version_hasdirv2(struct xfs_sb *sbp) |
472 | { | 417 | { |
473 | return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5) || | 418 | return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5 || |
474 | (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && | 419 | (sbp->sb_versionnum & XFS_SB_VERSION_DIRV2BIT); |
475 | (sbp->sb_versionnum & XFS_SB_VERSION_DIRV2BIT)); | ||
476 | } | 420 | } |
477 | 421 | ||
478 | static inline int xfs_sb_version_haslogv2(xfs_sb_t *sbp) | 422 | static inline bool xfs_sb_version_haslogv2(struct xfs_sb *sbp) |
479 | { | 423 | { |
480 | return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5) || | 424 | return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5 || |
481 | (XFS_SB_VERSION_NUM(sbp) >= XFS_SB_VERSION_4 && | 425 | (sbp->sb_versionnum & XFS_SB_VERSION_LOGV2BIT); |
482 | (sbp->sb_versionnum & XFS_SB_VERSION_LOGV2BIT)); | ||
483 | } | 426 | } |
484 | 427 | ||
485 | static inline int xfs_sb_version_hasextflgbit(xfs_sb_t *sbp) | 428 | static inline bool xfs_sb_version_hasextflgbit(struct xfs_sb *sbp) |
486 | { | 429 | { |
487 | return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5) || | 430 | return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5 || |
488 | (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && | 431 | (sbp->sb_versionnum & XFS_SB_VERSION_EXTFLGBIT); |
489 | (sbp->sb_versionnum & XFS_SB_VERSION_EXTFLGBIT)); | ||
490 | } | 432 | } |
491 | 433 | ||
492 | static inline int xfs_sb_version_hassector(xfs_sb_t *sbp) | 434 | static inline bool xfs_sb_version_hassector(struct xfs_sb *sbp) |
493 | { | 435 | { |
494 | return XFS_SB_VERSION_NUM(sbp) >= XFS_SB_VERSION_4 && | 436 | return (sbp->sb_versionnum & XFS_SB_VERSION_SECTORBIT); |
495 | (sbp->sb_versionnum & XFS_SB_VERSION_SECTORBIT); | ||
496 | } | 437 | } |
497 | 438 | ||
498 | static inline int xfs_sb_version_hasasciici(xfs_sb_t *sbp) | 439 | static inline bool xfs_sb_version_hasasciici(struct xfs_sb *sbp) |
499 | { | 440 | { |
500 | return XFS_SB_VERSION_NUM(sbp) >= XFS_SB_VERSION_4 && | 441 | return (sbp->sb_versionnum & XFS_SB_VERSION_BORGBIT); |
501 | (sbp->sb_versionnum & XFS_SB_VERSION_BORGBIT); | ||
502 | } | 442 | } |
503 | 443 | ||
504 | static inline int xfs_sb_version_hasmorebits(xfs_sb_t *sbp) | 444 | static inline bool xfs_sb_version_hasmorebits(struct xfs_sb *sbp) |
505 | { | 445 | { |
506 | return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5) || | 446 | return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5 || |
507 | (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && | 447 | (sbp->sb_versionnum & XFS_SB_VERSION_MOREBITSBIT); |
508 | (sbp->sb_versionnum & XFS_SB_VERSION_MOREBITSBIT)); | ||
509 | } | 448 | } |
510 | 449 | ||
511 | /* | 450 | /* |
512 | * sb_features2 bit version macros. | 451 | * sb_features2 bit version macros. |
513 | * | ||
514 | * For example, for a bit defined as XFS_SB_VERSION2_FUNBIT, has a macro: | ||
515 | * | ||
516 | * SB_VERSION_HASFUNBIT(xfs_sb_t *sbp) | ||
517 | * ((xfs_sb_version_hasmorebits(sbp) && | ||
518 | * ((sbp)->sb_features2 & XFS_SB_VERSION2_FUNBIT) | ||
519 | */ | 452 | */ |
520 | 453 | static inline bool xfs_sb_version_haslazysbcount(struct xfs_sb *sbp) | |
521 | static inline int xfs_sb_version_haslazysbcount(xfs_sb_t *sbp) | ||
522 | { | 454 | { |
523 | return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5) || | 455 | return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5) || |
524 | (xfs_sb_version_hasmorebits(sbp) && | 456 | (xfs_sb_version_hasmorebits(sbp) && |
525 | (sbp->sb_features2 & XFS_SB_VERSION2_LAZYSBCOUNTBIT)); | 457 | (sbp->sb_features2 & XFS_SB_VERSION2_LAZYSBCOUNTBIT)); |
526 | } | 458 | } |
527 | 459 | ||
528 | static inline int xfs_sb_version_hasattr2(xfs_sb_t *sbp) | 460 | static inline bool xfs_sb_version_hasattr2(struct xfs_sb *sbp) |
529 | { | 461 | { |
530 | return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5) || | 462 | return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5) || |
531 | (xfs_sb_version_hasmorebits(sbp) && | 463 | (xfs_sb_version_hasmorebits(sbp) && |
532 | (sbp->sb_features2 & XFS_SB_VERSION2_ATTR2BIT)); | 464 | (sbp->sb_features2 & XFS_SB_VERSION2_ATTR2BIT)); |
533 | } | 465 | } |
534 | 466 | ||
535 | static inline void xfs_sb_version_addattr2(xfs_sb_t *sbp) | 467 | static inline void xfs_sb_version_addattr2(struct xfs_sb *sbp) |
536 | { | 468 | { |
537 | sbp->sb_versionnum |= XFS_SB_VERSION_MOREBITSBIT; | 469 | sbp->sb_versionnum |= XFS_SB_VERSION_MOREBITSBIT; |
538 | sbp->sb_features2 |= XFS_SB_VERSION2_ATTR2BIT; | 470 | sbp->sb_features2 |= XFS_SB_VERSION2_ATTR2BIT; |
539 | } | 471 | } |
540 | 472 | ||
541 | static inline void xfs_sb_version_removeattr2(xfs_sb_t *sbp) | 473 | static inline void xfs_sb_version_removeattr2(struct xfs_sb *sbp) |
542 | { | 474 | { |
543 | sbp->sb_features2 &= ~XFS_SB_VERSION2_ATTR2BIT; | 475 | sbp->sb_features2 &= ~XFS_SB_VERSION2_ATTR2BIT; |
544 | if (!sbp->sb_features2) | 476 | if (!sbp->sb_features2) |
545 | sbp->sb_versionnum &= ~XFS_SB_VERSION_MOREBITSBIT; | 477 | sbp->sb_versionnum &= ~XFS_SB_VERSION_MOREBITSBIT; |
546 | } | 478 | } |
547 | 479 | ||
548 | static inline int xfs_sb_version_hasprojid32bit(xfs_sb_t *sbp) | 480 | static inline bool xfs_sb_version_hasprojid32bit(struct xfs_sb *sbp) |
549 | { | 481 | { |
550 | return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5) || | 482 | return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5) || |
551 | (xfs_sb_version_hasmorebits(sbp) && | 483 | (xfs_sb_version_hasmorebits(sbp) && |
552 | (sbp->sb_features2 & XFS_SB_VERSION2_PROJID32BIT)); | 484 | (sbp->sb_features2 & XFS_SB_VERSION2_PROJID32BIT)); |
553 | } | 485 | } |
554 | 486 | ||
555 | static inline void xfs_sb_version_addprojid32bit(xfs_sb_t *sbp) | 487 | static inline void xfs_sb_version_addprojid32bit(struct xfs_sb *sbp) |
556 | { | 488 | { |
557 | sbp->sb_versionnum |= XFS_SB_VERSION_MOREBITSBIT; | 489 | sbp->sb_versionnum |= XFS_SB_VERSION_MOREBITSBIT; |
558 | sbp->sb_features2 |= XFS_SB_VERSION2_PROJID32BIT; | 490 | sbp->sb_features2 |= XFS_SB_VERSION2_PROJID32BIT; |
@@ -623,12 +555,12 @@ xfs_sb_has_incompat_log_feature( | |||
623 | /* | 555 | /* |
624 | * V5 superblock specific feature checks | 556 | * V5 superblock specific feature checks |
625 | */ | 557 | */ |
626 | static inline int xfs_sb_version_hascrc(xfs_sb_t *sbp) | 558 | static inline int xfs_sb_version_hascrc(struct xfs_sb *sbp) |
627 | { | 559 | { |
628 | return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5; | 560 | return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5; |
629 | } | 561 | } |
630 | 562 | ||
631 | static inline int xfs_sb_version_has_pquotino(xfs_sb_t *sbp) | 563 | static inline int xfs_sb_version_has_pquotino(struct xfs_sb *sbp) |
632 | { | 564 | { |
633 | return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5; | 565 | return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5; |
634 | } | 566 | } |