Re: ext4 extents: How to determine if an extent points to a hole.

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

 



Hi,


On Sun, Sep 13, 2009 at 10:07 PM, Manish Katiyar <mkatiyar@xxxxxxxxx> wrote:
> On Sun, Sep 13, 2009 at 5:44 PM, SandeepKsinha <sandeepksinha@xxxxxxxxx> wrote:
>> Hi all,
>>
>> Looking at the flags in the extent info,  Is there any specifc flags
>> which indicates an extent to be a HOLE??
>
> I am not sure if I understand the question correctly ...... why would
> you need that ? Can you give an example where it should be used ??
>

Look at e4defrag.c,
it checks the file size and allocates the same number of blocks for
donor inode. Which will eventually make a holey file into a normal
one.
Any tool/application should make sure that they leave a sparse file as sparse.

I think, as suggested by Greg Freemyer, we can use BMAP ioctl to get
such information.


>>
>> I could only find the following ones...
>>
>>  39#define FIEMAP_MAX_OFFSET       (~0ULL)
>>  40
>>  41#define FIEMAP_FLAG_SYNC        0x00000001 /* sync file data before map */
>>  42#define FIEMAP_FLAG_XATTR       0x00000002 /* map extended attribute tree */
>>  43
>>  44#define FIEMAP_FLAGS_COMPAT     (FIEMAP_FLAG_SYNC | FIEMAP_FLAG_XATTR)
>>  45
>>  46#define FIEMAP_EXTENT_LAST              0x00000001 /* Last extent
>> in file. */
>>  47#define FIEMAP_EXTENT_UNKNOWN           0x00000002 /* Data
>> location unknown. */
>>  48#define FIEMAP_EXTENT_DELALLOC          0x00000004 /* Location
>> still pending.
>>  49                                                    * Sets
>> EXTENT_UNKNOWN. */
>>  50#define FIEMAP_EXTENT_ENCODED           0x00000008 /* Data can not be read
>>  51                                                    * while fs is
>> unmounted */
>>  52#define FIEMAP_EXTENT_DATA_ENCRYPTED    0x00000080 /* Data is
>> encrypted by fs.
>>  53                                                    * Sets
>> EXTENT_NO_BYPASS. */
>>  54#define FIEMAP_EXTENT_NOT_ALIGNED       0x00000100 /* Extent
>> offsets may not be
>>  55                                                    * block aligned. */
>>  56#define FIEMAP_EXTENT_DATA_INLINE       0x00000200 /* Data mixed
>> with metadata.
>>  57                                                    * Sets
>> EXTENT_NOT_ALIGNED.*/
>>  58#define FIEMAP_EXTENT_DATA_TAIL         0x00000400 /* Multiple
>> files in block.
>>  59                                                    * Sets
>> EXTENT_NOT_ALIGNED.*/
>>  60#define FIEMAP_EXTENT_UNWRITTEN         0x00000800 /* Space allocated, but
>>  61                                                    * no data
>> (i.e. zero). */
>>  62#define FIEMAP_EXTENT_MERGED            0x00001000 /* File does not natively
>>  63                                                    * support
>> extents. Result
>>  64                                                    * merged for
>> efficiency. */
>>
>>
>> --
>> Regards,
>> Sandeep.
>>
>>
>>
>>
>>
>>
>> “To learn is to change. Education is a process that changes the learner.”
>>
>> --
>> To unsubscribe from this list: send an email with
>> "unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
>> Please read the FAQ at http://kernelnewbies.org/FAQ
>>
>>
>
>
>
> --
> Thanks -
> Manish
>



-- 
Regards,
Sandeep.





 	
“To learn is to change. Education is a process that changes the learner.”

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
Please read the FAQ at http://kernelnewbies.org/FAQ



[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux