opendb_tdb: with break_to_none attribute only opens also break oplocks
authorStefan Metzmacher <metze@samba.org>
Tue, 26 Feb 2008 11:52:46 +0000 (12:52 +0100)
committerStefan Metzmacher <metze@samba.org>
Tue, 26 Feb 2008 12:53:33 +0000 (13:53 +0100)
metze

source/ntvfs/common/opendb_tdb.c

index 73c04b7c4f3ffae9154df737fd9af37202531b3c..fe5a0a886422ac0efa3a5bdf52b79fde12942bc3 100644 (file)
@@ -288,7 +288,8 @@ static NTSTATUS odb_oplock_break_send(struct odb_context *odb,
 }
 
 static bool access_attributes_only(uint32_t access_mask,
-                                  uint32_t open_disposition)
+                                  uint32_t open_disposition,
+                                  bool break_to_none)
 {
        switch (open_disposition) {
        case NTCREATEX_DISP_SUPERSEDE:
@@ -298,6 +299,11 @@ static bool access_attributes_only(uint32_t access_mask,
        default:
                break;
        }
+
+       if (break_to_none) {
+               return false;
+       }
+
 #define CHECK_MASK(m,g) ((m) && (((m) & ~(g))==0) && (((m) & (g)) != 0))
        return CHECK_MASK(access_mask,
                          SEC_STD_SYNCHRONIZE |
@@ -326,7 +332,8 @@ static NTSTATUS odb_tdb_open_can_internal(struct odb_context *odb,
                         * but we'll not grant the oplock below
                         */
                        attrs_only = access_attributes_only(access_mask,
-                                                           open_disposition);
+                                                           open_disposition,
+                                                           break_to_none);
                        if (attrs_only) {
                                break;
                        }