added data_unlock()