- u8 *p = rpbuf;
-
- p = put_u32(p, rpdata->rptag);
- p += 2; /* We set ReparseDataLength later */
- p = put_u16(p, rpdata->rpreserved);
- p = put_u16(p, 0); /* substitute name offset */
- p = put_u16(p, rpdata->substitute_name_nbytes); /* substitute name nbytes */
- p = put_u16(p, rpdata->substitute_name_nbytes + 2); /* print name offset */
- p = put_u16(p, rpdata->print_name_nbytes); /* print name nbytes */
- if (rpdata->rptag == WIM_IO_REPARSE_TAG_SYMLINK)
- p = put_u32(p, rpdata->rpflags);
+ struct reparse_buffer_disk *rpbuf_disk =
+ (struct reparse_buffer_disk*)rpbuf;
+ u8 *data;
+
+ rpbuf_disk->rptag = cpu_to_le32(rpdata->rptag);
+ rpbuf_disk->rpreserved = cpu_to_le16(rpdata->rpreserved);
+ rpbuf_disk->substitute_name_offset = cpu_to_le16(0);
+ rpbuf_disk->substitute_name_nbytes = cpu_to_le16(rpdata->substitute_name_nbytes);
+ rpbuf_disk->print_name_offset = cpu_to_le16(rpdata->substitute_name_nbytes + 2);
+ rpbuf_disk->print_name_nbytes = cpu_to_le16(rpdata->print_name_nbytes);
+
+ if (rpdata->rptag == WIM_IO_REPARSE_TAG_SYMLINK) {
+ rpbuf_disk->symlink.rpflags = cpu_to_le32(rpdata->rpflags);
+ data = rpbuf_disk->symlink.data;
+ } else {
+ data = rpbuf_disk->junction.data;
+ }
+