On Tue, 24 Feb 2015 20:01:38 +0100, Andreas Rohner wrote:
> *buf,
> int cleansi, cleansu, dirtysi, dirtysu;
> long ncleaned = 0, ndirtied = 0;
> int ret = 0;
> + bool sup_ext = (supsz >= NILFS_EXT_SUINFO_UPDATE_SIZE);
> + bool su_ext = nilfs_sufile_ext_supported(sufile);
>
> if (unlikely(nsup == 0))
> return ret;
> @@ -926,6 +949,9 @@ ssize_t nilfs_sufile_set_suinfo(struct inode *sufile,
> void *buf,
> (~0UL << __NR_NILFS_SUINFO_UPDATE_FIELDS))
> || (nilfs_suinfo_update_nblocks(sup) &&
> sup->sup_sui.sui_nblocks >
> + nilfs->ns_blocks_per_segment)
> + || (nilfs_suinfo_update_nlive_blks(sup) && sup_ext &&
> + sup->sup_sui.sui_nlive_blks >
> nilfs->ns_blocks_per_segment))
> return -EINVAL;
> }
> @@ -953,6 +979,14 @@ ssize_t nilfs_sufile_set_suinfo(struct inode *sufile,
> void *buf,
> if (nilfs_suinfo_update_nblocks(sup))
> su->su_nblocks = cpu_to_le32(sup->sup_sui.sui_nblocks);
>
> + if (nilfs_suinfo_update_nlive_blks(sup) && sup_ext && su_ext)
> + su->su_nlive_blks =
> + cpu_to_le32(sup->sup_sui.sui_nlive_blks);
> +
> + if (nilfs_suinfo_update_nlive_lastmod(sup) && sup_ext && su_ext)
> + su->su_nlive_lastmod =
> + cpu_to_le64(sup->sup_sui.sui_nlive_lastmod);
> +
> if (nilfs_suinfo_update_flags(sup)) {
> /*
> * Active flag is a virtual flag projected by running
> diff --git a/fs/nilfs2/sufile.h b/fs/nilfs2/sufile.h
> index c446325..d56498b 100644
> --- a/fs/nilfs2/sufile.h
> +++ b/fs/nilfs2/sufile.h
> @@ -28,6 +28,11 @@
> #include <linux/nilfs2_fs.h>
> #include "mdt.h"
>
> +static inline int
> +nilfs_sufile_ext_supported(const struct inode *sufile)
> +{
> + return NILFS_MDT(sufile)->mi_entry_size >= NILFS_EXT_SEGMENT_USAGE_SIZE;
> +}
>
> static inline unsigned long nilfs_sufile_get_nsegments(struct inode *sufile)
> {
> diff --git a/include/linux/nilfs2_fs.h b/include/linux/nilfs2_fs.h
> index ff3fea3..5d83c55 100644
> --- a/include/linux/nilfs2_fs.h
> +++ b/include/linux/nilfs2_fs.h
> @@ -220,9 +220,11 @@ struct nilfs_super_block {
> * If there is a bit set in the incompatible feature set that the kernel
> * doesn't know about, it should refuse to mount the filesystem.
> */
> -#define NILFS_FEATURE_COMPAT_RO_BLOCK_COUNT 0x00000001ULL
> +#define NILFS_FEATURE_COMPAT_SUFILE_EXTENSION (1ULL << 0)
This feature name is not good. sufile can be extended more in a future.
You should name it based on the meaning of the extension of this time.
As I mentioned in another patch, I think this could be unified to the
TRACK_LIVE_BLKS feature that a later patch adds since the live block
counting of this patchset is inherently depending on the extention of
sufile.
>
> -#define NILFS_FEATURE_COMPAT_SUPP 0ULL
> +#define NILFS_FEATURE_COMPAT_RO_BLOCK_COUNT (1ULL << 0)
> +
Regards,
Ryusuke Konishi
--
To unsubscribe from this list: send the line "unsubscribe linux-nilfs" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html