Making Nilfs ZAC Compliant

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi All,

We are trying to make Nilfs work with a SMR Device which adheres to Zoned ATA Commands(ZAC) Specification.
One of the restrictions in the specification is reading an unwritten part of the Zone(Segment in Nilfs) will cause a read error.

We observe that Nilfs does not write a complete physical segment(we use 256MB segment)  always. After digging in the source a while we figured that this
is due to the fact that Nilfs requires a certain number of minimum blocks for constructing a partial segment (NILFS_PSEG_MIN_BLOCKS), which currently is 2.
So we see some segments where the last block (in our case a block is 4k)  is not being written to.

When some utilities like garbage collector and dump segment reads (May not be an exhaustive list)  a segment it tries to read the entire physical segment. This causes read errors in the kernel and hence retries for the last unwritten block in certain segments.
In an attempt to solve this problem we were trying to figure out if we can write some dummy data to the remaining unutilized blocks in the segment. But we are not sure what would be the best way to do this.

Another solution we had in mind was to figure out all places where segments are read, and modify it to prevent it from reading unwritten blocks. But we feel this might be more complex solution and might impact performance more.

Please advise us on the best way to solve the problem. Also what would be architecturally a best place to fix the problem.

Thanks,
Benixon
--
To unsubscribe from this list: send the line "unsubscribe linux-nilfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Filesystem Development]     [Linux BTRFS]     [Linux CIFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux