fs/ntfs3: Refactor ni_parse_reparse
Change argument from void* to struct REPARSE_DATA_BUFFER* We copy data to buffer, so we can read it later in ntfs_read_mft. Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
This commit is contained in:
parent
14a981193e
commit
cd4c76ff80
|
@ -1710,18 +1710,16 @@ out:
|
|||
/*
|
||||
* ni_parse_reparse
|
||||
*
|
||||
* Buffer is at least 24 bytes.
|
||||
* buffer - memory for reparse buffer header
|
||||
*/
|
||||
enum REPARSE_SIGN ni_parse_reparse(struct ntfs_inode *ni, struct ATTRIB *attr,
|
||||
void *buffer)
|
||||
struct REPARSE_DATA_BUFFER *buffer)
|
||||
{
|
||||
const struct REPARSE_DATA_BUFFER *rp = NULL;
|
||||
u8 bits;
|
||||
u16 len;
|
||||
typeof(rp->CompressReparseBuffer) *cmpr;
|
||||
|
||||
static_assert(sizeof(struct REPARSE_DATA_BUFFER) <= 24);
|
||||
|
||||
/* Try to estimate reparse point. */
|
||||
if (!attr->non_res) {
|
||||
rp = resident_data_ex(attr, sizeof(struct REPARSE_DATA_BUFFER));
|
||||
|
@ -1807,6 +1805,9 @@ enum REPARSE_SIGN ni_parse_reparse(struct ntfs_inode *ni, struct ATTRIB *attr,
|
|||
return REPARSE_NONE;
|
||||
}
|
||||
|
||||
if (buffer != rp)
|
||||
memcpy(buffer, rp, sizeof(struct REPARSE_DATA_BUFFER));
|
||||
|
||||
/* Looks like normal symlink. */
|
||||
return REPARSE_LINK;
|
||||
}
|
||||
|
|
|
@ -547,7 +547,7 @@ struct ATTR_FILE_NAME *ni_fname_type(struct ntfs_inode *ni, u8 name_type,
|
|||
struct ATTR_LIST_ENTRY **entry);
|
||||
int ni_new_attr_flags(struct ntfs_inode *ni, enum FILE_ATTRIBUTE new_fa);
|
||||
enum REPARSE_SIGN ni_parse_reparse(struct ntfs_inode *ni, struct ATTRIB *attr,
|
||||
void *buffer);
|
||||
struct REPARSE_DATA_BUFFER *buffer);
|
||||
int ni_write_inode(struct inode *inode, int sync, const char *hint);
|
||||
#define _ni_write_inode(i, w) ni_write_inode(i, w, __func__)
|
||||
int ni_fiemap(struct ntfs_inode *ni, struct fiemap_extent_info *fieinfo,
|
||||
|
|
Loading…
Reference in New Issue