| .. | .. |
|---|
| 236 | 236 | size[0] = 8; /* sizeof __le64 */ |
|---|
| 237 | 237 | data[0] = ptr; |
|---|
| 238 | 238 | |
|---|
| 239 | | - rc = SMB2_set_info_init(tcon, server, |
|---|
| 240 | | - &rqst[num_rqst], COMPOUND_FID, |
|---|
| 241 | | - COMPOUND_FID, current->tgid, |
|---|
| 242 | | - FILE_END_OF_FILE_INFORMATION, |
|---|
| 243 | | - SMB2_O_INFO_FILE, 0, data, size); |
|---|
| 239 | + if (cfile) { |
|---|
| 240 | + rc = SMB2_set_info_init(tcon, server, |
|---|
| 241 | + &rqst[num_rqst], |
|---|
| 242 | + cfile->fid.persistent_fid, |
|---|
| 243 | + cfile->fid.volatile_fid, |
|---|
| 244 | + current->tgid, |
|---|
| 245 | + FILE_END_OF_FILE_INFORMATION, |
|---|
| 246 | + SMB2_O_INFO_FILE, 0, |
|---|
| 247 | + data, size); |
|---|
| 248 | + } else { |
|---|
| 249 | + rc = SMB2_set_info_init(tcon, server, |
|---|
| 250 | + &rqst[num_rqst], |
|---|
| 251 | + COMPOUND_FID, |
|---|
| 252 | + COMPOUND_FID, |
|---|
| 253 | + current->tgid, |
|---|
| 254 | + FILE_END_OF_FILE_INFORMATION, |
|---|
| 255 | + SMB2_O_INFO_FILE, 0, |
|---|
| 256 | + data, size); |
|---|
| 257 | + if (!rc) { |
|---|
| 258 | + smb2_set_next_command(tcon, &rqst[num_rqst]); |
|---|
| 259 | + smb2_set_related(&rqst[num_rqst]); |
|---|
| 260 | + } |
|---|
| 261 | + } |
|---|
| 244 | 262 | if (rc) |
|---|
| 245 | 263 | goto finished; |
|---|
| 246 | | - smb2_set_next_command(tcon, &rqst[num_rqst]); |
|---|
| 247 | | - smb2_set_related(&rqst[num_rqst++]); |
|---|
| 264 | + num_rqst++; |
|---|
| 248 | 265 | trace_smb3_set_eof_enter(xid, ses->Suid, tcon->tid, full_path); |
|---|
| 249 | 266 | break; |
|---|
| 250 | 267 | case SMB2_OP_SET_INFO: |
|---|