Lines Matching defs:lease
94 struct lease *lease;
96 lease = kmalloc(sizeof(struct lease), GFP_KERNEL);
97 if (!lease)
100 memcpy(lease->lease_key, lctx->lease_key, SMB2_LEASE_KEY_SIZE);
101 lease->state = lctx->req_state;
102 lease->new_state = 0;
103 lease->flags = lctx->flags;
104 lease->duration = lctx->duration;
105 lease->is_dir = lctx->is_dir;
106 memcpy(lease->parent_lease_key, lctx->parent_lease_key, SMB2_LEASE_KEY_SIZE);
107 lease->version = lctx->version;
108 lease->epoch = le16_to_cpu(lctx->epoch) + 1;
110 opinfo->o_lease = lease;
117 struct lease *lease;
119 lease = opinfo->o_lease;
120 kfree(lease);
260 struct lease *lease = opinfo->o_lease;
266 pr_err("lease state(0x%x)\n", lease->state);
272 lease->state = lease->new_state;
284 struct lease *lease = opinfo->o_lease;
286 lease->state = lease->new_state;
299 struct lease *lease = opinfo->o_lease;
305 pr_err("lease state(0x%x)\n", lease->state);
310 lease->state = lease->new_state;
322 struct lease *lease = opinfo->o_lease;
327 pr_err("lease state(0x%x)\n", lease->state);
332 lease->state = lease->new_state;
337 * lease_read_to_write() - upgrade lease state from read to write
338 * @opinfo: current lease info
344 struct lease *lease = opinfo->o_lease;
346 if (!(lease->state & SMB2_LEASE_READ_CACHING_LE)) {
347 ksmbd_debug(OPLOCK, "bad lease state(0x%x)\n", lease->state);
351 lease->new_state = SMB2_LEASE_NONE_LE;
352 lease->state |= SMB2_LEASE_WRITE_CACHING_LE;
353 if (lease->state & SMB2_LEASE_HANDLE_CACHING_LE)
361 * lease_none_upgrade() - upgrade lease state from none
362 * @opinfo: current lease info
363 * @new_state: new lease state
369 struct lease *lease = opinfo->o_lease;
371 if (!(lease->state == SMB2_LEASE_NONE_LE)) {
372 ksmbd_debug(OPLOCK, "bad lease state(0x%x)\n", lease->state);
376 lease->new_state = SMB2_LEASE_NONE_LE;
377 lease->state = new_state;
378 if (lease->state & SMB2_LEASE_HANDLE_CACHING_LE)
379 if (lease->state & SMB2_LEASE_WRITE_CACHING_LE)
383 else if (lease->state & SMB2_LEASE_WRITE_CACHING_LE)
385 else if (lease->state & SMB2_LEASE_READ_CACHING_LE)
424 * grant_write_oplock() - grant exclusive/batch oplock or write lease
427 * @lctx: lease context information
434 struct lease *lease = opinfo_new->o_lease;
442 lease->state = lctx->req_state;
443 memcpy(lease->lease_key, lctx->lease_key, SMB2_LEASE_KEY_SIZE);
448 * grant_read_oplock() - grant level2 oplock or read lease
450 * @lctx: lease context information
457 struct lease *lease = opinfo_new->o_lease;
462 lease->state = SMB2_LEASE_READ_CACHING_LE;
464 lease->state |= SMB2_LEASE_HANDLE_CACHING_LE;
465 memcpy(lease->lease_key, lctx->lease_key, SMB2_LEASE_KEY_SIZE);
470 * grant_none_oplock() - grant none oplock or none lease
472 * @lctx: lease context information
479 struct lease *lease = opinfo_new->o_lease;
484 lease->state = 0;
485 memcpy(lease->lease_key, lctx->lease_key, SMB2_LEASE_KEY_SIZE);
504 * same_client_has_lease() - check whether current lease request is
505 * from lease owner of file
508 * @lctx: lease context information
510 * Return: oplock(lease) object on success, otherwise NULL
517 struct lease *lease;
525 * Compare lease key and client_guid to know request from same owner
533 lease = opinfo->o_lease;
538 /* skip upgrading lease about breaking lease */
544 /* upgrading lease */
547 if (lease->state != SMB2_LEASE_NONE_LE &&
548 lease->state == (lctx->req_state & lease->state)) {
549 lease->epoch++;
550 lease->state |= lctx->req_state;
561 lease->epoch++;
562 lease->state = lctx->req_state;
566 if (lctx->req_state && lease->state ==
568 lease->epoch++;
742 * __smb2_lease_break_noti() - send lease break command from server
799 * smb2_lease_break_noti() - break lease when a new client request
800 * write lease
801 * @opinfo: conains lease state information
811 struct lease *lease = opinfo->o_lease;
823 br_info->curr_state = lease->state;
824 br_info->new_state = lease->new_state;
825 if (lease->version == 2)
826 br_info->epoch = cpu_to_le16(++lease->epoch);
829 memcpy(br_info->lease_key, lease->lease_key, SMB2_LEASE_KEY_SIZE);
880 /* Need to break exclusive/batch oplock, write lease or overwrite_if */
886 struct lease *lease = brk_opinfo->o_lease;
896 * Create overwrite break trigger the lease break to
899 lease->new_state = SMB2_LEASE_NONE_LE;
901 if (lease->state & SMB2_LEASE_WRITE_CACHING_LE) {
902 if (lease->state & SMB2_LEASE_HANDLE_CACHING_LE)
903 lease->new_state =
907 lease->new_state =
910 if (lease->state & SMB2_LEASE_HANDLE_CACHING_LE &&
911 !lease->is_dir)
912 lease->new_state =
915 lease->new_state = SMB2_LEASE_NONE_LE;
919 if (lease->state & (SMB2_LEASE_WRITE_CACHING_LE |
1017 "found same lease key is already used in other files\n");
1034 struct lease *lease1 = op1->o_lease;
1035 struct lease *lease2 = op2->o_lease;
1178 * smb_grant_oplock() - handle oplock/lease request on file open
1184 * @lctx: lease context information on file open
1232 /* is lease already granted ? */
1284 /* grant fixed oplock on stacked locking between lease and oplock */
1342 * smb_break_all_levII_oplock() - send level2 oplock or read lease break command
1377 ksmbd_debug(OPLOCK, "unexpected lease state(0x%x)\n",
1427 * smb2_map_lease_to_oplock() - map lease state to corresponding oplock type
1428 * @lease_state: lease type
1449 * create_lease_buf() - create lease context for open cmd response
1450 * @rbuf: buffer to create lease context response
1451 * @lease: buffer to stored parsed lease state information
1453 void create_lease_buf(u8 *rbuf, struct lease *lease)
1455 if (lease->version == 2) {
1459 memcpy(buf->lcontext.LeaseKey, lease->lease_key,
1461 buf->lcontext.LeaseFlags = lease->flags;
1462 buf->lcontext.Epoch = cpu_to_le16(lease->epoch);
1463 buf->lcontext.LeaseState = lease->state;
1464 memcpy(buf->lcontext.ParentLeaseKey, lease->parent_lease_key,
1480 memcpy(buf->lcontext.LeaseKey, lease->lease_key, SMB2_LEASE_KEY_SIZE);
1481 buf->lcontext.LeaseFlags = lease->flags;
1482 buf->lcontext.LeaseState = lease->state;
1497 * parse_lease_state() - parse lease context containted in file open request
1501 * Return: oplock state, -ENOENT if create lease context not found
1760 * Find lease object(opinfo) for given lease key/fid from lease
1764 * lookup_lease_in_table() - find a matching lease info object
1766 * @lease_key: lease key to be searched for